home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / amiga / programmer / 6434 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.6 KB

  1. Path: mail2news.demon.co.uk!gate.demon.co.uk
  2. From: Justin Lane <justin@redalert.demon.co.uk>
  3. Newsgroups: comp.sys.amiga.programmer
  4. Subject: Re: random number in assembly
  5. Date: Thu, 28 Mar 96 00:42:30 GMT
  6. Organization: Private Node
  7. Message-ID: <9603280042.AA000cx@redalert.demon.co.uk>
  8. References: <Pine.NEB.3.91.960327200012.12939A-100000@dirty.cute.fi>
  9. X-NNTP-Posting-Host: gate.demon.co.uk
  10. X-Newsreader: TIN [AMIGA 1.3 950726BETA PL0]
  11. X-Mail2News-Path: relay-1.mail.demon.net!gate.demon.co.uk
  12.  
  13. Kristian Slavov (kslavov@dirty.cute.fi) wrote:
  14. : Hi!
  15. : Could someone tell me how to get a VERY WELL randomized number?
  16. : I've tried all kinds of methods but they are not enough random :(
  17. : To make the problem a little bit harder I need a routine that can be used 
  18. : in loops so that the numbers wouldn't be for ex. 4,8,12,16,20 or 
  19. : 2,3,4,5,6,7. Hope you understood that :) 
  20. : +++++++++++++++++++++++++++++++++++++++++++++
  21. : + Kristian "Hwmagic" Slavov                 +
  22. : + Email: krslavov@freenet.hut.fi   --or--   +
  23. : +         kslavov@cute.fi                   +
  24. : +++++++++++++++++++++++++++++++++++++++++++++
  25.  
  26. I was given this routine by garygould@redalert.demon.co.uk but I think he
  27. may have got it from somewhere else :-
  28.  
  29. BTW I have never used this routine.
  30.  
  31.     ; (d7)
  32.     ; d7 number range to chosse from
  33.     ; return d7
  34.  
  35. Randseed    DS.B    4
  36. Random    movem.l    d0-d1/a0,-(sp)
  37.     move.l    d7,d1
  38.     tst.w    d1
  39.     beq    zer1
  40.     lea    Randseed,a0
  41.     move.l    (a0),d0
  42.     add.l    d0,d0
  43.     bhi.s    over
  44.     eori.l    #$1d872b41,d0
  45. over    move.l    d0,(a0)
  46.     andi.l    #$ffff,d0
  47.     divu    d1,d0
  48.     swap    d0
  49.     move.w    d0,d7
  50. zer1    movem.l    (sp)+,d0-d1/a0
  51.     rts
  52.  
  53.  
  54.  
  55.